//
//  QLBottomBar.swift
//  QdLife
//
//  Created by x on 15/11/7.
//  Copyright © 2015年 Xia. All rights reserved.
//

import UIKit

protocol QLBottomBarDelegate: NSObjectProtocol {
    // 选择子控制器的代理方法
    func selectController(index: NSInteger)
    
}

class QLBottomBar: UIView, QLTopBarDelegate {

    weak var delegate: QLBottomBarDelegate?
    // 首页按钮
    @IBOutlet weak var homeButton: QLBottomButton!
    // 更多按钮
    @IBOutlet weak var moreButton: UIButton!
    // 记录上次点击的按钮
    private var lastSelectedCtrlButton: QLBottomButton?
    
    override func awakeFromNib() {
        // 默认选择首页
        selectController(homeButton)
        
    }
    // 改变子控制器的方法
    private func changeController(index: NSInteger) {
        // 判断已设置代理时, 由代理执行选择子控制器
        if let _ = delegate {
            delegate!.selectController(index)
        }
        // 让上一次点击的按钮的选择状态变为 false
        lastSelectedCtrlButton?.selected = false
    }
    // 点击底部选择控制器的按钮
    @IBAction func selectController(sender: QLBottomButton) {
        // 改变选择的子控制器
        changeController(sender.tag)
        // 当前按钮改为已选择状态, 并让记录上次点击的按钮变为当前按钮
        sender.selected = true
        lastSelectedCtrlButton = sender
        // 将更多按钮的选择状态变为 false
        moreButton.selected = false
        // 隐藏 topBar, 并让其从父控件移除
        topBar.hidden = true
        topBar.removeFromSuperview()
    }
    // 点击更多按钮
    @IBAction func moreButton(sender: UIButton) {
        // 根据 topBar 控件的隐藏状态, 执行不同操作
        if topBar.hidden {
            topBar.hidden = false
            superview!.addSubview(topBar)
            moreButton.selected = true
        } else {
            topBar.hidden = true
            topBar.removeFromSuperview()
            moreButton.selected = false
        }
    }
    
    // MARK: - QLTopBarDelegate
    // 点击 topBar 上按钮时执行的代理方法
    func selectMoreController(button: QLBottomButton) {
        changeController(button.tag)
        topBar.hidden = true
        topBar.removeFromSuperview()
    }
    
    // MARK: - 懒加载
    // 懒加载 topBar
    private lazy var topBar: QLTopBar = {
        let topBar = NSBundle.mainBundle().loadNibNamed("QLTopBar", owner: nil, options: nil).last as! QLTopBar
        // 设置代理为当前控件
        topBar.delegate = self
        // 设置 topBarframe
        let topBarHeight: CGFloat = 40
        let topBarY = kScreenHeight - self.height - topBarHeight
        topBar.frame = CGRectMake(0, topBarY, kScreenWidth, topBarHeight)
        // topBar 默认隐藏
        topBar.hidden = true
        return topBar
    }()
}
